package DFdwer;

public class LinkListTest {
	public static void main(String[] args) {
		LinkList<String> ll=new LinkList<String>();
		ll.add("a");
		ll.add("b");
		ll.add("c");
		ll.add("d");
	    ll.remove(1);
		System.out.println(ll.get(0));
		System.out.println(ll.get(1));
		System.out.println(ll.get(2));
		System.out.println(ll.get(3));
		System.out.println(ll.size());
	}

}
class LinkList<T>{
	private Node<T> frist=null;
	private Node<T> last=null;
	private int size=0;
	
	public void add(T t){
		if(frist==null){
			Node<T> node=new Node<T>();
			node.setT(t);
			size++;
			frist=node;
			last=node;
		}else{			
			Node<T> node=new Node<T>();			
			node.setT(t);
			last.setNextNode(node);
			size++;
			last=node;
		}
	}
	
	public T get(int i){		
		if(i>=0&&i<size){
			Node<T> nod=null;
			for(int n=0;n<=i;n++){
				if(n==0)
				   nod=frist;
				else
				   nod=nod.getNextNode();				
				if(i==n){
					return nod.getT();
				}			
			}			
		}
		 return null;
	}	
	
	public void remove(int i){
		if(i>=0&&i<size){
		   if(size<2){
			   frist=null;
			   last=null;
			   size=0;
		   }else{
			   size--;
		      if(i==0){
			     frist=frist.getNextNode();		     
		      }else{	    
					Node<T> nod1=null;
					Node<T> nod2=null;
					for(int n=0;n<=i;n++){
						if(n==0){
						   nod1=frist;
						   nod2=frist;
						}else{
						   nod2=nod1;
						   nod1=nod1.getNextNode();						   
						}   
						if(i==n){
							if(nod1!=null)
							    nod2.setNextNode(nod1.getNextNode());
							else{
								nod2.setNextNode(null);
								last=nod2;
							}
						}				
					}	
		      }		
	     	}
		}
	}
	
	
	
	public int size(){
		return size;
	}
}

class Node <T>{
	public T getT() {
		return t;
	}
	public void setT(T t) {
		this.t = t;
	}
	public Node<T> getNextNode() {
		return nextNode;
	}
	public void setNextNode(Node<T> nextNode) {
		this.nextNode = nextNode;
	}
	private T t;
	private Node<T> nextNode=null;
}